﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.UI.Common;

namespace Sinacor.UI.Bovespa.Ordens.Presenter
{
    public class CadastroMotivo: BasePresenter<ICadastroMotivo>
    {

        #region Contrutor 

        public CadastroMotivo(ICadastroMotivo view)
            : base(view)
        {
            _communicationMotivo = new Communication.Motivo(this.Session);
 
        }

        #endregion

        #region Campos

        private Communication.Motivo _communicationMotivo;
        private ModelCollection<Model.Motivo> _listaMotivos;

        #endregion

        #region Propriedades

        public ModelCollection<Model.Motivo> ListaMotivos
        {
            get { return _listaMotivos; }
            set { _listaMotivos = value; }
        }

        #endregion 

        #region Metodos

        public bool AlterarMotivo(Model.Motivo motivo)
        {
            try
            {
                _communicationMotivo.AlterarMotivo(motivo);
                this.View.InformarMotivoAtualizadoSucesso();

            }
            catch (Exception ex)
            {
                base.HandleException(ex);
                return false;
            }
            return true;
        }

        public bool IncluirMotivo(Model.Motivo motivo)
        {
            try
            {
                _communicationMotivo.IncluirMotivo(motivo);
                this.View.InformarMotivoIncluidoSucesso();
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
                return true;
            }
            return false;
        }

        public bool ExcluirMotivo(Model.Motivo motivo)
        {
            try
            {
                Model.Parameter.FiltroMotivo filtroMotivo = new Sinacor.UI.Bovespa.Ordens.Model.Parameter.FiltroMotivo();
                filtroMotivo.Codigo = motivo.Codigo;
                filtroMotivo.Descricao = motivo.Descricao;
                _communicationMotivo.ExcluirMotivo(filtroMotivo);
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
                return false;
            }
            return true;
        }

        public void ConsultarMotivos()
        {
            try
            {
                Model.Parameter.FiltroMotivo motivo = new Sinacor.UI.Bovespa.Ordens.Model.Parameter.FiltroMotivo();
                ListaMotivos = this._communicationMotivo.ConsultarMotivos(motivo);

                this.View.AtualizarMotivos();
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
            }
        }

        public void Inicializar()
        {
            this.ListaMotivos = new ModelCollection<Sinacor.UI.Bovespa.Ordens.Model.Motivo>();
            this.ConsultarMotivos();
        }

        #endregion
    }
}
